package com.bbcare.followup.plat.store.ibatis;

import com.bbcare.followup.plat.dto.bo.PatientDumpLogStatisticsBO;
import com.bbcare.followup.plat.dto.bo.PatientDumpTimesStatisticsBO;
import com.bbcare.followup.plat.dto.bo.PatientUseDrugStatisticsBO;
import com.bbcare.followup.plat.entity.DumpBreastRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;


/**
 * 复旦儿科泵乳记录Mapper接口
 *
 * @author gxl
 * @date 2020-11-03
 */
public interface IDumpBreastRecordDao
{
    /**
     * 查询复旦儿科泵乳记录
     *
     * @param id 复旦儿科泵乳记录ID
     * @return 复旦儿科泵乳记录
     */
    public DumpBreastRecord selectDumpBreastRecordById(String id);

    /**
     * 查询复旦儿科泵乳记录列表
     *
     * @param params
     * @return 复旦儿科泵乳记录集合
     */
    public List<DumpBreastRecord> selectDumpBreastRecordList(Map params);

    /**
     * 新增复旦儿科泵乳记录
     *
     * @param dumpBreastRecord 复旦儿科泵乳记录
     * @return 结果
     */
    public int insertDumpBreastRecord(DumpBreastRecord dumpBreastRecord);

    /**
     * 修改复旦儿科泵乳记录
     *
     * @param dumpBreastRecord 复旦儿科泵乳记录
     * @return 结果
     */
    public int updateDumpBreastRecord(DumpBreastRecord dumpBreastRecord);

    /**
     * 删除复旦儿科泵乳记录
     *
     * @param id 复旦儿科泵乳记录ID
     * @return 结果
     */
    public int deleteDumpBreastRecordById(String id);

    /**
     * 批量删除复旦儿科泵乳记录
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteDumpBreastRecordByIds(String[] ids);

    Integer selectCountDumpBreastRecord(Map params);

    List<String> getUserIdByConditions(Map params);

    /**
     * 获取用户基本信息
     * @param userId
     * @return
     */
    List<Map<String, Object>> selectPatientBaseInfo(String userId);

    /**
     * 批量获取用户基本信息
     * @param userIds
     * @return
     */
    List<Map<String, Object>> selectPatientBaseInfoByUserIds(@Param("userIds") List<String> userIds,@Param("queueId") String queueId);

    /**
     * 获取用户24小时次数
     * @param userId
     * @return
     */
    Integer select24HourTimes(String userId);

    /**
     * 获取用户24小时奶量
     * @param userId
     * @return
     */
    Double select24HourrQuantity(String userId);


    /**
     * 批量获取用户24小时次数
     * @param userIds
     * @return
     */
    List<Map<String, String>> select24HourTimesByUserIds(@Param("userIds")List<String> userIds);

    /**
     * 批量获取用户24小时奶量
     * @param userIds
     * @return
     */
    List<Map<String, String>> select24HourrQuantityByUserIds(@Param("userIds")List<String> userIds);

    Integer selectCountDumpBreastPatientList(Map params);

    Object selectLastDumpRecordById(String patientId);

    List<String> getPatientIdByConditions(Map params);

    /**
     * 泵乳日志统计
     * @param paramMap
     * @return
     */
    List<PatientDumpLogStatisticsBO> selectPatientLogStatistics(Map<String,Object> paramMap);

    /**
     * 泵乳次数统计
     * @param paramMap
     * @return
     */
    List<PatientDumpTimesStatisticsBO> selectPatientTimesStatistics(Map<String,Object> paramMap);

    /**
     * 用药统计
     * @param paramMap
     * @return
     */
    List<PatientUseDrugStatisticsBO> selectPatientUseDrugStatistics(Map<String,Object> paramMap);

    List<DumpBreastRecord> statLastDumpTime();
}
